REST API এবং ORM Integration কি?
REST (Representational State Transfer) API হল একটি সফটওয়্যার আর্কিটেকচার স্টাইল যা HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপন করে। ORM (Object Relational Mapping) হল একটি প্রযুক্তি যা ডেটাবেস টেবিলগুলোর সঙ্গে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষার অবজেক্টগুলোর ম্যাপিংয়ের মাধ্যমে ডেটাবেস পরিচালনা সহজ করে। স্প্রিং বুট ORM ব্যবহার করে আমরা REST API এবং ORM কে একসাথে ইন্টিগ্রেট করতে পারি, যা ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন কার্যকর করতে সাহায্য করে।
স্প্রিং বুট ORM Integration: উদাহরণ সহ
এখানে একটি সাধারণ উদাহরণ দেখানো হবে যেখানে স্প্রিং বুট ORM (JPA) এবং REST API এর মাধ্যমে ডেটাবেসে অবজেক্ট ম্যানিপুলেশন করা হয়।
১. স্প্রিং বুট প্রজেক্ট সেটআপ
প্রথমে আপনাকে স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করতে হবে। আপনি spring-boot-starter-web এবং spring-boot-starter-data-jpa ডিপেনডেন্সি গুলো ব্যবহার করতে পারেন। এখানে Maven ব্যবহার করা হয়েছে:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
২. ডেটাবেস কনফিগারেশন
স্প্রিং বুট ORM এ JPA কনফিগারেশন করতে হয়। H2 ডেটাবেস ব্যবহার করে উদাহরণ দেখানো হবে।
application.properties ফাইলের মধ্যে নিম্নলিখিত কনফিগারেশন যুক্ত করুন:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
৩. ডোমেইন অবজেক্ট তৈরি করা (Entity Class)
এখন আপনি একটি Entity ক্লাস তৈরি করবেন, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে। উদাহরণস্বরূপ, একটি Employee অবজেক্ট:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
private Long id;
private String name;
private String department;
// getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
৪. রেপোজিটরি তৈরি করা
Employee অবজেক্টের জন্য একটি রেপোজিটরি তৈরি করতে হবে, যা ডেটাবেস অপারেশন পরিচালনা করবে:
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
৫. সার্ভিস ক্লাস তৈরি করা
এখন একটি সার্ভিস ক্লাস তৈরি করবেন যা রেপোজিটরি ব্যবহার করে ডেটাবেসে CRUD অপারেশন করবে:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
public List<Employee> getAllEmployees() {
return employeeRepository.findAll();
}
public Optional<Employee> getEmployeeById(Long id) {
return employeeRepository.findById(id);
}
public Employee saveEmployee(Employee employee) {
return employeeRepository.save(employee);
}
public void deleteEmployee(Long id) {
employeeRepository.deleteById(id);
}
}
৬. REST API কন্ট্রোলার তৈরি করা
এখন একটি REST কন্ট্রোলার তৈরি করতে হবে, যা HTTP রিকোয়েস্টে ডেটাবেস অপারেশন পরিচালনা করবে। EmployeeController ক্লাসটি REST API এর জন্য রাউটিং পরিচালনা করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@GetMapping
public List<Employee> getAllEmployees() {
return employeeService.getAllEmployees();
}
@GetMapping("/{id}")
public Optional<Employee> getEmployeeById(@PathVariable Long id) {
return employeeService.getEmployeeById(id);
}
@PostMapping
public Employee createEmployee(@RequestBody Employee employee) {
return employeeService.saveEmployee(employee);
}
@DeleteMapping("/{id}")
public void deleteEmployee(@PathVariable Long id) {
employeeService.deleteEmployee(id);
}
}
৭. স্প্রিং বুট অ্যাপ্লিকেশন চালানো
এখন, আপনার অ্যাপ্লিকেশন চলমান অবস্থায়, আপনি ব্রাউজারে অথবা API ক্লায়েন্ট (যেমন Postman) এর মাধ্যমে REST API ব্যবহার করতে পারেন।
- GET
/api/employees– সকল কর্মচারীর তথ্য পাবেন। - GET
/api/employees/{id}– নির্দিষ্ট কর্মচারীর তথ্য পাবেন। - POST
/api/employees– নতুন কর্মচারী তৈরি করবেন। - DELETE
/api/employees/{id}– নির্দিষ্ট কর্মচারী মুছে ফেলবেন।
এটি ছিল স্প্রিং বুট ORM এবং REST API ইন্টিগ্রেশনের একটি সাধারণ উদাহরণ। এই উদাহরণটি দিয়ে আপনি স্প্রিং বুটের মাধ্যমে ডেটাবেস এবং REST API ব্যবস্থাপনা সহজে করতে পারবেন।